Introduction

The aim of this pretest for the CL-Experiment (CO2 long-term periodic injection experiment) was to find out how the temperature of two synthetic resins behave over time in a borehole.

Material & Methods

Experimental Setup

For this resin pretest, double-walled cylinders (r1 = 2.25 cm, r2 = 2.5 cm, 17 cm high, 325.5 g) made of plastic were used and bedded on sand. The two resins and their coresponding hardener (Sikadur-52 and Biresin CR83 & CH83-10) were mixed at a ambient temperature of 10 °C. The resins poured from a height of 3 m through a plastic tube (diameter 5 mm) once in both annulus and once in the outer annulus into the prepared forms. The temperature was measured with TMP35 sensors (Analog Devices, USA) attached to temperature-resistant silicone cable (wire size 0.25 mm2, Helukabel, Switzerland). The data logging was done every 6 seconds with a WioTerminal (Seeed Technology, China). The data logging and processing code was written with Arduino IDE (version 2.1.0). The data analysis was done with R (version 4.2.2) and RStudio (version 2023.03.0+386).

Overview of the experimental setup Close-up of resin filling

Loading Libraries and Import Data-Set

The data were imported as txt. files. The sensor numbers were then converted to a factor (as.factor(), package “base”) and the time was transformed to a date-time format (dmy_hms(), package “lubridate”). The time since the start of the experiment was also added (difftime(), package “base”).

library(dplyr)
library(ggplot2)
library(lubridate)
library(ggpmisc)
library(ggprism)


Sikadur_raw <- read.csv("Experiment1_Sikadur.txt", sep = ";", header = T, col.names = c("Time","Sensor_No","Analog_Read","Voltage_mV","Temperature_degC"))

Sikadur_both_annulus <- Sikadur_raw %>%
  mutate(Sensor_No = as.factor(Sensor_No)) %>%
  mutate(Time = dmy_hms(Time)) %>%
  mutate(Time_since_Start = difftime(time1 = Time, time2 = min(Time), units = "hours")) %>%
  filter(Sensor_No == 1 | Sensor_No == 3)

Sikadur_outer_annulus <- Sikadur_raw %>%
  mutate(Sensor_No = as.factor(Sensor_No)) %>%
  mutate(Time = dmy_hms(Time)) %>%
  filter(Time >= "2023-06-07 15:00:00") %>%
  mutate(Time_since_Start = difftime(time1 = Time, time2 = min(Time), units = "hours")) %>%
  filter(Sensor_No == 2 | Sensor_No == 4)



Biresin_raw <- read.csv("Experiment2_Biresin.txt", sep = ";", header = T, col.names = c("Time","Sensor_No","Analog_Read","Voltage_mV","Temperature_degC"))

Biresin_both_annulus <- Biresin_raw %>%
  mutate(Sensor_No = as.factor(Sensor_No)) %>%
  mutate(Time = dmy_hms(Time)) %>%
  mutate(Time_since_Start = difftime(time1 = Time, time2 = min(Time), units = "hours")) %>%
  filter(Sensor_No == 1 | Sensor_No == 3)

Biresin_outer_annulus <- Biresin_raw %>%
  mutate(Sensor_No = as.factor(Sensor_No)) %>%
  mutate(Time = dmy_hms(Time)) %>%
  filter(Time >= "2023-06-07 15:00:00") %>%
  mutate(Time_since_Start = difftime(time1 = Time, time2 = min(Time), units = "hours")) %>%
  filter(Sensor_No == 2 | Sensor_No == 4)

Results

Sikadur

Both annulus filled:

Sikadur_both_annulus_Plot <- ggplot(data = Sikadur_both_annulus, mapping = aes(x = Time_since_Start, y = Temperature_degC, colour = Sensor_No)) +
  geom_line(linewidth = 1.25) +
  theme_classic() +
  theme(axis.title.y = element_text(margin = margin(r = 15)), 
        axis.title.x = element_text(margin = margin(t = 10)), 
        axis.text= element_text(colour="black")) +
  xlab("Time [h]") +
  ylab(expression("Temperature [°C]")) +
  scale_x_continuous(guide = "prism_minor", 
                             limits = c(0, 16),
                             expand = c(0, 0),
                             minor_breaks = seq(0, 16, 2)) +
  scale_y_continuous(limits = c(0,160), breaks = seq(0, 160, 10), expand = c(0,0)) +
  labs(caption = "Jonas M. Windisch, Mont Terri Rock Lab, swisstopo") +
  theme(legend.position = c(0.9, 0.5)) +
  guides(color = guide_legend(title = "Temperatur Sensors")) +
  scale_color_manual(labels = c("No. 1 (outer annulus)", "No. 3 (inner annulus)"),
                     values = c("darkolivegreen3","royalblue1")) +
  ggtitle("Sikadur-52 (both annulus filled)") +
  stat_peaks(span = NULL,
             geom = "text_s",
             mapping = aes(label = paste(after_stat(y.label), after_stat(x.label))),
             x.label.fmt = "after %.0f hrs ",
             y.label.fmt = " Max Temp. of %.0f°C",
             arrow = grid::arrow(length = unit(0.3, "cm")),
             position = position_nudge_keep(x = c(0.5, 0.25),  y = c(5, 10)),
             hjust = 0)
  
Sikadur_both_annulus_Plot

ggsave(filename = "Sikadur_both_annulus.pdf", plot = Sikadur_both_annulus_Plot, width = 25, height = 10, units = "cm", dpi = 1100)

Sikadur_both_annulus_Plot_transparent <- Sikadur_both_annulus_Plot + theme(legend.background = element_rect(fill = "transparent"),
        legend.box.background = element_rect(fill = "transparent"),
        panel.background = element_rect(fill = "transparent"),
        plot.background = element_rect(fill = "transparent",
                                       color = NA))
ggsave(Sikadur_both_annulus_Plot_transparent, filename = "Sikadur_both_annulus_transparent.png", bg = "transparent")

Outer annulus filled:

Sikadur_outer_annulus_Plot <- ggplot(data = Sikadur_outer_annulus, mapping = aes(x = Time_since_Start, y = Temperature_degC, colour = Sensor_No)) +
  geom_line(linewidth = 1.25) +
  theme_classic() +
  theme(axis.title.y = element_text(margin = margin(r = 15)), 
        axis.title.x = element_text(margin = margin(t = 10)), 
        axis.text= element_text(colour="black")) +
  xlab("Time [h]") +
  ylab(expression("Temperature [°C]")) +
  scale_x_continuous(guide = "prism_minor", 
                             limits = c(0, 16),
                             expand = c(0, 0),
                             minor_breaks = seq(0, 16, 2)) +
  scale_y_continuous(limits = c(0,160), breaks = seq(0, 160, 10), expand = c(0,0)) +
  labs(caption = "Jonas M. Windisch, Mont Terri Rock Lab, swisstopo") +
  theme(legend.position = c(0.9, 0.5)) +
  guides(color = guide_legend(title = "Temperatur Sensors")) +
  scale_color_manual(labels = c("No. 2 (lower third)", "No. 4 (upper third)"),
                     values = c("darkolivegreen3","royalblue1")) +
  ggtitle("Sikadur-52 (outer annulus filled)") +
  stat_peaks(span = NULL,
             geom = "text_s",
             mapping = aes(label = paste(after_stat(y.label), after_stat(x.label))),
             x.label.fmt = "after %.0f hrs ",
             y.label.fmt = " Max Temp. of %.0f°C",
             arrow = grid::arrow(length = unit(0.3, "cm")),
             position = position_nudge_keep(x = c(0.5, 0.25),  y = c(5, 10)),
             hjust = 0)
  
Sikadur_outer_annulus_Plot

ggsave(filename = "Sikadur_outer_annulus.pdf", plot = Sikadur_outer_annulus_Plot, width = 25, height = 10, units = "cm", dpi = 1100)

Sikadur_outer_annulus_Plot_transparent <- Sikadur_outer_annulus_Plot + theme(legend.background = element_rect(fill = "transparent"),
        legend.box.background = element_rect(fill = "transparent"),
        panel.background = element_rect(fill = "transparent"),
        plot.background = element_rect(fill = "transparent",
                                       color = NA))
ggsave(Sikadur_outer_annulus_Plot_transparent, filename = "Sikadur_outer_annulus_transparent.png", bg = "transparent")

Biresin

Both annulus filled:

Biresin_both_annulus_Plot <- ggplot(data = Biresin_both_annulus, mapping = aes(x = Time_since_Start, y = Temperature_degC, colour = Sensor_No)) +
  geom_line(linewidth = 1.25) +
  theme_classic() +
  theme(axis.title.y = element_text(margin = margin(r = 15)), 
        axis.title.x = element_text(margin = margin(t = 10)), 
        axis.text= element_text(colour="black")) +
  xlab("Time [h]") +
  ylab(expression("Temperature [°C]")) +
  scale_x_continuous(guide = "prism_minor", 
                             limits = c(0, 16),
                             expand = c(0, 0),
                             minor_breaks = seq(0, 16, 2)) +
  scale_y_continuous(limits = c(0,160), breaks = seq(0, 160, 10), expand = c(0,0)) +
  labs(caption = "Jonas M. Windisch, Mont Terri Rock Lab, swisstopo") +
  theme(legend.position = c(0.25, 0.5)) +
  guides(color = guide_legend(title = "Temperatur Sensors")) +
  scale_color_manual(labels = c("No. 1 (outer annulus)", "No. 3 (inner annulus)"),
                     values = c("darkolivegreen3","royalblue1")) +
  ggtitle("Biresin CR83 & CH83-10 (both annulus filled)") +
  stat_peaks(span = NULL,
             geom = "text_s",
             mapping = aes(label = paste(after_stat(y.label), after_stat(x.label))),
             x.label.fmt = "after %.0f hrs ",
             y.label.fmt = " Max Temp. of %.0f°C",
             arrow = grid::arrow(length = unit(0.3, "cm")),
             position = position_nudge_keep(x = c(0.5, 0.25),  y = c(5, 10)),
             hjust = 0)
  
Biresin_both_annulus_Plot

ggsave(filename = "Biresin_both_annulus.pdf", plot = Biresin_both_annulus_Plot, width = 25, height = 10, units = "cm", dpi = 1100)

Biresin_both_annulus_Plot_transparent <- Biresin_both_annulus_Plot + theme(legend.background = element_rect(fill = "transparent"),
        legend.box.background = element_rect(fill = "transparent"),
        panel.background = element_rect(fill = "transparent"),
        plot.background = element_rect(fill = "transparent",
                                       color = NA))
ggsave(Biresin_both_annulus_Plot_transparent, filename = "Biresin_both_annulus_transparent.png", bg = "transparent")

Outer annulus filled:

Biresin_outer_annulus_Plot <- ggplot(data = Biresin_outer_annulus, mapping = aes(x = Time_since_Start, y = Temperature_degC, colour = Sensor_No)) +
  geom_line(linewidth = 1.25) +
  theme_classic() +
  theme(axis.title.y = element_text(margin = margin(r = 15)), 
        axis.title.x = element_text(margin = margin(t = 10)), 
        axis.text= element_text(colour="black")) +
  xlab("Time [h]") +
  ylab(expression("Temperature [°C]")) +
  scale_x_continuous(guide = "prism_minor", 
                             limits = c(0, 16),
                             expand = c(0, 0),
                             minor_breaks = seq(0, 16, 2)) +
  scale_y_continuous(limits = c(0,160), breaks = seq(0, 160, 10), expand = c(0,0)) +
  labs(caption = "Jonas M. Windisch, Mont Terri Rock Lab, swisstopo") +
  theme(legend.position = c(0.25, 0.5)) +
  guides(color = guide_legend(title = "Temperatur Sensors")) +
  scale_color_manual(labels = c("No. 2 (lower third)", "No. 4 (upper third)"),
                     values = c("darkolivegreen3","royalblue1")) +
  ggtitle("Biresin CR83 & CH83-10 (outer annulus filled)") +
  stat_peaks(span = NULL,
             geom = "text_s",
             mapping = aes(label = paste(after_stat(y.label), after_stat(x.label))),
             x.label.fmt = "after %.0f hrs ",
             y.label.fmt = " Max Temp. of %.0f°C",
             arrow = grid::arrow(length = unit(0.3, "cm")),
             position = position_nudge_keep(x = c(0.5, 0.25),  y = c(5, 10)),
             hjust = 0)
  
Biresin_outer_annulus_Plot

ggsave(filename = "Biresin_outer_annulus.pdf", plot = Biresin_outer_annulus_Plot, width = 25, height = 10, units = "cm", dpi = 1100)

Biresin_outer_annulus_Plot_transparent <- Biresin_outer_annulus_Plot + theme(legend.background = element_rect(fill = "transparent"),
        legend.box.background = element_rect(fill = "transparent"),
        panel.background = element_rect(fill = "transparent"),
        plot.background = element_rect(fill = "transparent",
                                       color = NA))
ggsave(Biresin_outer_annulus_Plot_transparent, filename = "Biresin_outer_annulus_transparent.png", bg = "transparent")
LS0tCnRpdGxlOiAiUmVzaW4gUHJlLVRlc3QiCmF1dGhvcjogIkpvbmFzIE0uIFdpbmRpc2NoLCBzd2lzc3RvcG8iCmRhdGU6ICIxNi4wNi4yMDIzIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRoZW1lOiBqb3VybmFsCiAgICBoaWdobGlnaHQ6IHRhbmdvCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgb3V0cHV0X2RpcjogImRvY3MiCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKLS0tCgpgYGB7PWh0bWx9CjxzdHlsZT4KYm9keSB7CnRleHQtYWxpZ246IGp1c3RpZnk7Zm9udC1zaXplOiAxN3NweDsgbGluZS1oZWlnaHQ6IDEuNzVlbX0KICB9Cjwvc3R5bGU+CmBgYApgYGB7PWh0bWx9CjxzdHlsZT4KI1RPQyB7CiAgYmFja2dyb3VuZDogdXJsKCJodHRwczovL3d3dy5xdWludGVzc2Eub3JnL3BpY3R1cmVzL25ld3NfMzg4LmpwZyIpOwogIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsKICBwYWRkaW5nLXRvcDogMjUwcHggIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9Cjwvc3R5bGU+CmBgYAojIyBJbnRyb2R1Y3Rpb24KClRoZSBhaW0gb2YgdGhpcyBwcmV0ZXN0IGZvciB0aGUgQ0wtRXhwZXJpbWVudCAoQ09+Mn4gbG9uZy10ZXJtIHBlcmlvZGljIGluamVjdGlvbiBleHBlcmltZW50KSB3YXMgdG8gZmluZCBvdXQgaG93IHRoZSB0ZW1wZXJhdHVyZSBvZiB0d28gc3ludGhldGljIHJlc2lucyBiZWhhdmUgb3ZlciB0aW1lIGluIGEgYm9yZWhvbGUuCgojIyBNYXRlcmlhbCAmIE1ldGhvZHMKCiMjIyBFeHBlcmltZW50YWwgU2V0dXAKCkZvciB0aGlzIHJlc2luIHByZXRlc3QsIGRvdWJsZS13YWxsZWQgY3lsaW5kZXJzIChyfjF+ID0gMi4yNSBjbSwgcn4yfiA9IDIuNSBjbSwgMTcgY20gaGlnaCwgMzI1LjUgZykgbWFkZSBvZiBwbGFzdGljIHdlcmUgdXNlZCBhbmQgYmVkZGVkIG9uIHNhbmQuIFRoZSB0d28gcmVzaW5zIGFuZCB0aGVpciBjb3Jlc3BvbmRpbmcgaGFyZGVuZXIgKFNpa2FkdXItNTIgYW5kIEJpcmVzaW4gQ1I4MyAmIENIODMtMTApIHdlcmUgbWl4ZWQgYXQgYSBhbWJpZW50IHRlbXBlcmF0dXJlIG9mIDEwIMKwQy4gVGhlIHJlc2lucyBwb3VyZWQgZnJvbSBhIGhlaWdodCBvZiAzIG0gdGhyb3VnaCBhIHBsYXN0aWMgdHViZSAoZGlhbWV0ZXIgNSBtbSkgb25jZSBpbiBib3RoIGFubnVsdXMgYW5kIG9uY2UgaW4gdGhlIG91dGVyIGFubnVsdXMgaW50byB0aGUgcHJlcGFyZWQgZm9ybXMuIFRoZSB0ZW1wZXJhdHVyZSB3YXMgbWVhc3VyZWQgd2l0aCBUTVAzNSBzZW5zb3JzIChBbmFsb2cgRGV2aWNlcywgVVNBKSBhdHRhY2hlZCB0byB0ZW1wZXJhdHVyZS1yZXNpc3RhbnQgc2lsaWNvbmUgY2FibGUgKHdpcmUgc2l6ZSAwLjI1IG1tXjJeLCBIZWx1a2FiZWwsIFN3aXR6ZXJsYW5kKS4gVGhlIGRhdGEgbG9nZ2luZyB3YXMgZG9uZSBldmVyeSA2IHNlY29uZHMgd2l0aCBhIFdpb1Rlcm1pbmFsIChTZWVlZCBUZWNobm9sb2d5LCBDaGluYSkuIFRoZSBkYXRhIGxvZ2dpbmcgYW5kIHByb2Nlc3NpbmcgY29kZSB3YXMgd3JpdHRlbiB3aXRoIEFyZHVpbm8gSURFICh2ZXJzaW9uIDIuMS4wKS4gVGhlIGRhdGEgYW5hbHlzaXMgd2FzIGRvbmUgd2l0aCBSICh2ZXJzaW9uIDQuMi4yKSBhbmQgUlN0dWRpbyAodmVyc2lvbiAyMDIzLjAzLjArMzg2KS4KCjxjZW50ZXI+IVtPdmVydmlldyBvZiB0aGUgZXhwZXJpbWVudGFsIHNldHVwXShJbWFnZXMvT3ZlcnZpZXcucG5nKXt3aWR0aD0iNDAwIn0gIVtDbG9zZS11cCBvZiByZXNpbiBmaWxsaW5nXShJbWFnZXMvQ2xvc2V1cF8xLnBuZyl7d2lkdGg9IjQwMCJ9CgojIyMgTG9hZGluZyBMaWJyYXJpZXMgYW5kIEltcG9ydCBEYXRhLVNldAoKVGhlIGRhdGEgd2VyZSBpbXBvcnRlZCBhcyB0eHQuIGZpbGVzLiBUaGUgc2Vuc29yIG51bWJlcnMgd2VyZSB0aGVuIGNvbnZlcnRlZCB0byBhIGZhY3RvciAoYGFzLmZhY3RvcigpYCwgcGFja2FnZSAiYmFzZSIpIGFuZCB0aGUgdGltZSB3YXMgdHJhbnNmb3JtZWQgdG8gYSBkYXRlLXRpbWUgZm9ybWF0IChgZG15X2htcygpYCwgcGFja2FnZSAibHVicmlkYXRlIikuIFRoZSB0aW1lIHNpbmNlIHRoZSBzdGFydCBvZiB0aGUgZXhwZXJpbWVudCB3YXMgYWxzbyBhZGRlZCAoYGRpZmZ0aW1lKClgLCBwYWNrYWdlICJiYXNlIikuCgpgYGB7ciBzZXR1cCwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShsdWJyaWRhdGUpCmxpYnJhcnkoZ2dwbWlzYykKbGlicmFyeShnZ3ByaXNtKQoKClNpa2FkdXJfcmF3IDwtIHJlYWQuY3N2KCJFeHBlcmltZW50MV9TaWthZHVyLnR4dCIsIHNlcCA9ICI7IiwgaGVhZGVyID0gVCwgY29sLm5hbWVzID0gYygiVGltZSIsIlNlbnNvcl9ObyIsIkFuYWxvZ19SZWFkIiwiVm9sdGFnZV9tViIsIlRlbXBlcmF0dXJlX2RlZ0MiKSkKClNpa2FkdXJfYm90aF9hbm51bHVzIDwtIFNpa2FkdXJfcmF3ICU+JQogIG11dGF0ZShTZW5zb3JfTm8gPSBhcy5mYWN0b3IoU2Vuc29yX05vKSkgJT4lCiAgbXV0YXRlKFRpbWUgPSBkbXlfaG1zKFRpbWUpKSAlPiUKICBtdXRhdGUoVGltZV9zaW5jZV9TdGFydCA9IGRpZmZ0aW1lKHRpbWUxID0gVGltZSwgdGltZTIgPSBtaW4oVGltZSksIHVuaXRzID0gImhvdXJzIikpICU+JQogIGZpbHRlcihTZW5zb3JfTm8gPT0gMSB8IFNlbnNvcl9ObyA9PSAzKQoKU2lrYWR1cl9vdXRlcl9hbm51bHVzIDwtIFNpa2FkdXJfcmF3ICU+JQogIG11dGF0ZShTZW5zb3JfTm8gPSBhcy5mYWN0b3IoU2Vuc29yX05vKSkgJT4lCiAgbXV0YXRlKFRpbWUgPSBkbXlfaG1zKFRpbWUpKSAlPiUKICBmaWx0ZXIoVGltZSA+PSAiMjAyMy0wNi0wNyAxNTowMDowMCIpICU+JQogIG11dGF0ZShUaW1lX3NpbmNlX1N0YXJ0ID0gZGlmZnRpbWUodGltZTEgPSBUaW1lLCB0aW1lMiA9IG1pbihUaW1lKSwgdW5pdHMgPSAiaG91cnMiKSkgJT4lCiAgZmlsdGVyKFNlbnNvcl9ObyA9PSAyIHwgU2Vuc29yX05vID09IDQpCgoKCkJpcmVzaW5fcmF3IDwtIHJlYWQuY3N2KCJFeHBlcmltZW50Ml9CaXJlc2luLnR4dCIsIHNlcCA9ICI7IiwgaGVhZGVyID0gVCwgY29sLm5hbWVzID0gYygiVGltZSIsIlNlbnNvcl9ObyIsIkFuYWxvZ19SZWFkIiwiVm9sdGFnZV9tViIsIlRlbXBlcmF0dXJlX2RlZ0MiKSkKCkJpcmVzaW5fYm90aF9hbm51bHVzIDwtIEJpcmVzaW5fcmF3ICU+JQogIG11dGF0ZShTZW5zb3JfTm8gPSBhcy5mYWN0b3IoU2Vuc29yX05vKSkgJT4lCiAgbXV0YXRlKFRpbWUgPSBkbXlfaG1zKFRpbWUpKSAlPiUKICBtdXRhdGUoVGltZV9zaW5jZV9TdGFydCA9IGRpZmZ0aW1lKHRpbWUxID0gVGltZSwgdGltZTIgPSBtaW4oVGltZSksIHVuaXRzID0gImhvdXJzIikpICU+JQogIGZpbHRlcihTZW5zb3JfTm8gPT0gMSB8IFNlbnNvcl9ObyA9PSAzKQoKQmlyZXNpbl9vdXRlcl9hbm51bHVzIDwtIEJpcmVzaW5fcmF3ICU+JQogIG11dGF0ZShTZW5zb3JfTm8gPSBhcy5mYWN0b3IoU2Vuc29yX05vKSkgJT4lCiAgbXV0YXRlKFRpbWUgPSBkbXlfaG1zKFRpbWUpKSAlPiUKICBmaWx0ZXIoVGltZSA+PSAiMjAyMy0wNi0wNyAxNTowMDowMCIpICU+JQogIG11dGF0ZShUaW1lX3NpbmNlX1N0YXJ0ID0gZGlmZnRpbWUodGltZTEgPSBUaW1lLCB0aW1lMiA9IG1pbihUaW1lKSwgdW5pdHMgPSAiaG91cnMiKSkgJT4lCiAgZmlsdGVyKFNlbnNvcl9ObyA9PSAyIHwgU2Vuc29yX05vID09IDQpCgpgYGAKCiMjIFJlc3VsdHMKCiMjIyBTaWthZHVyCgpCb3RoIGFubnVsdXMgZmlsbGVkOgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcGFnZWQucHJpbnQ9VFJVRX0KClNpa2FkdXJfYm90aF9hbm51bHVzX1Bsb3QgPC0gZ2dwbG90KGRhdGEgPSBTaWthZHVyX2JvdGhfYW5udWx1cywgbWFwcGluZyA9IGFlcyh4ID0gVGltZV9zaW5jZV9TdGFydCwgeSA9IFRlbXBlcmF0dXJlX2RlZ0MsIGNvbG91ciA9IFNlbnNvcl9ObykpICsKICBnZW9tX2xpbmUobGluZXdpZHRoID0gMS4yNSkgKwogIHRoZW1lX2NsYXNzaWMoKSArCiAgdGhlbWUoYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KG1hcmdpbiA9IG1hcmdpbihyID0gMTUpKSwgCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KG1hcmdpbiA9IG1hcmdpbih0ID0gMTApKSwgCiAgICAgICAgYXhpcy50ZXh0PSBlbGVtZW50X3RleHQoY29sb3VyPSJibGFjayIpKSArCiAgeGxhYigiVGltZSBbaF0iKSArCiAgeWxhYihleHByZXNzaW9uKCJUZW1wZXJhdHVyZSBbwrBDXSIpKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGd1aWRlID0gInByaXNtX21pbm9yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygwLCAxNiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gYygwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vcl9icmVha3MgPSBzZXEoMCwgMTYsIDIpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwxNjApLCBicmVha3MgPSBzZXEoMCwgMTYwLCAxMCksIGV4cGFuZCA9IGMoMCwwKSkgKwogIGxhYnMoY2FwdGlvbiA9ICJKb25hcyBNLiBXaW5kaXNjaCwgTW9udCBUZXJyaSBSb2NrIExhYiwgc3dpc3N0b3BvIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC45LCAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKHRpdGxlID0gIlRlbXBlcmF0dXIgU2Vuc29ycyIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKGxhYmVscyA9IGMoIk5vLiAxIChvdXRlciBhbm51bHVzKSIsICJOby4gMyAoaW5uZXIgYW5udWx1cykiKSwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygiZGFya29saXZlZ3JlZW4zIiwicm95YWxibHVlMSIpKSArCiAgZ2d0aXRsZSgiU2lrYWR1ci01MiAoYm90aCBhbm51bHVzIGZpbGxlZCkiKSArCiAgc3RhdF9wZWFrcyhzcGFuID0gTlVMTCwKICAgICAgICAgICAgIGdlb20gPSAidGV4dF9zIiwKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMobGFiZWwgPSBwYXN0ZShhZnRlcl9zdGF0KHkubGFiZWwpLCBhZnRlcl9zdGF0KHgubGFiZWwpKSksCiAgICAgICAgICAgICB4LmxhYmVsLmZtdCA9ICJhZnRlciAlLjBmIGhycyAiLAogICAgICAgICAgICAgeS5sYWJlbC5mbXQgPSAiIE1heCBUZW1wLiBvZiAlLjBmwrBDIiwKICAgICAgICAgICAgIGFycm93ID0gZ3JpZDo6YXJyb3cobGVuZ3RoID0gdW5pdCgwLjMsICJjbSIpKSwKICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fbnVkZ2Vfa2VlcCh4ID0gYygwLjUsIDAuMjUpLCAgeSA9IGMoNSwgMTApKSwKICAgICAgICAgICAgIGhqdXN0ID0gMCkKICAKU2lrYWR1cl9ib3RoX2FubnVsdXNfUGxvdAoKZ2dzYXZlKGZpbGVuYW1lID0gIlNpa2FkdXJfYm90aF9hbm51bHVzLnBkZiIsIHBsb3QgPSBTaWthZHVyX2JvdGhfYW5udWx1c19QbG90LCB3aWR0aCA9IDI1LCBoZWlnaHQgPSAxMCwgdW5pdHMgPSAiY20iLCBkcGkgPSAxMTAwKQoKU2lrYWR1cl9ib3RoX2FubnVsdXNfUGxvdF90cmFuc3BhcmVudCA8LSBTaWthZHVyX2JvdGhfYW5udWx1c19QbG90ICsgdGhlbWUobGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLAogICAgICAgIGxlZ2VuZC5ib3guYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksCiAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksCiAgICAgICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IE5BKSkKZ2dzYXZlKFNpa2FkdXJfYm90aF9hbm51bHVzX1Bsb3RfdHJhbnNwYXJlbnQsIGZpbGVuYW1lID0gIlNpa2FkdXJfYm90aF9hbm51bHVzX3RyYW5zcGFyZW50LnBuZyIsIGJnID0gInRyYW5zcGFyZW50IikKCmBgYAoKT3V0ZXIgYW5udWx1cyBmaWxsZWQ6CgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBwYWdlZC5wcmludD1UUlVFfQoKU2lrYWR1cl9vdXRlcl9hbm51bHVzX1Bsb3QgPC0gZ2dwbG90KGRhdGEgPSBTaWthZHVyX291dGVyX2FubnVsdXMsIG1hcHBpbmcgPSBhZXMoeCA9IFRpbWVfc2luY2VfU3RhcnQsIHkgPSBUZW1wZXJhdHVyZV9kZWdDLCBjb2xvdXIgPSBTZW5zb3JfTm8pKSArCiAgZ2VvbV9saW5lKGxpbmV3aWR0aCA9IDEuMjUpICsKICB0aGVtZV9jbGFzc2ljKCkgKwogIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChtYXJnaW4gPSBtYXJnaW4ociA9IDE1KSksIAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChtYXJnaW4gPSBtYXJnaW4odCA9IDEwKSksIAogICAgICAgIGF4aXMudGV4dD0gZWxlbWVudF90ZXh0KGNvbG91cj0iYmxhY2siKSkgKwogIHhsYWIoIlRpbWUgW2hdIikgKwogIHlsYWIoZXhwcmVzc2lvbigiVGVtcGVyYXR1cmUgW8KwQ10iKSkgKwogIHNjYWxlX3hfY29udGludW91cyhndWlkZSA9ICJwcmlzbV9taW5vciIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoMCwgMTYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IGMoMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JfYnJlYWtzID0gc2VxKDAsIDE2LCAyKSkgKwogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMTYwKSwgYnJlYWtzID0gc2VxKDAsIDE2MCwgMTApLCBleHBhbmQgPSBjKDAsMCkpICsKICBsYWJzKGNhcHRpb24gPSAiSm9uYXMgTS4gV2luZGlzY2gsIE1vbnQgVGVycmkgUm9jayBMYWIsIHN3aXNzdG9wbyIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSBjKDAuOSwgMC41KSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZCh0aXRsZSA9ICJUZW1wZXJhdHVyIFNlbnNvcnMiKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbChsYWJlbHMgPSBjKCJOby4gMiAobG93ZXIgdGhpcmQpIiwgIk5vLiA0ICh1cHBlciB0aGlyZCkiKSwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygiZGFya29saXZlZ3JlZW4zIiwicm95YWxibHVlMSIpKSArCiAgZ2d0aXRsZSgiU2lrYWR1ci01MiAob3V0ZXIgYW5udWx1cyBmaWxsZWQpIikgKwogIHN0YXRfcGVha3Moc3BhbiA9IE5VTEwsCiAgICAgICAgICAgICBnZW9tID0gInRleHRfcyIsCiAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKGxhYmVsID0gcGFzdGUoYWZ0ZXJfc3RhdCh5LmxhYmVsKSwgYWZ0ZXJfc3RhdCh4LmxhYmVsKSkpLAogICAgICAgICAgICAgeC5sYWJlbC5mbXQgPSAiYWZ0ZXIgJS4wZiBocnMgIiwKICAgICAgICAgICAgIHkubGFiZWwuZm10ID0gIiBNYXggVGVtcC4gb2YgJS4wZsKwQyIsCiAgICAgICAgICAgICBhcnJvdyA9IGdyaWQ6OmFycm93KGxlbmd0aCA9IHVuaXQoMC4zLCAiY20iKSksCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX251ZGdlX2tlZXAoeCA9IGMoMC41LCAwLjI1KSwgIHkgPSBjKDUsIDEwKSksCiAgICAgICAgICAgICBoanVzdCA9IDApCiAgClNpa2FkdXJfb3V0ZXJfYW5udWx1c19QbG90CgpnZ3NhdmUoZmlsZW5hbWUgPSAiU2lrYWR1cl9vdXRlcl9hbm51bHVzLnBkZiIsIHBsb3QgPSBTaWthZHVyX291dGVyX2FubnVsdXNfUGxvdCwgd2lkdGggPSAyNSwgaGVpZ2h0ID0gMTAsIHVuaXRzID0gImNtIiwgZHBpID0gMTEwMCkKClNpa2FkdXJfb3V0ZXJfYW5udWx1c19QbG90X3RyYW5zcGFyZW50IDwtIFNpa2FkdXJfb3V0ZXJfYW5udWx1c19QbG90ICsgdGhlbWUobGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLAogICAgICAgIGxlZ2VuZC5ib3guYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksCiAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksCiAgICAgICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IE5BKSkKZ2dzYXZlKFNpa2FkdXJfb3V0ZXJfYW5udWx1c19QbG90X3RyYW5zcGFyZW50LCBmaWxlbmFtZSA9ICJTaWthZHVyX291dGVyX2FubnVsdXNfdHJhbnNwYXJlbnQucG5nIiwgYmcgPSAidHJhbnNwYXJlbnQiKQoKYGBgCgojIyMgQmlyZXNpbgoKQm90aCBhbm51bHVzIGZpbGxlZDoKCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIHBhZ2VkLnByaW50PVRSVUV9CgpCaXJlc2luX2JvdGhfYW5udWx1c19QbG90IDwtIGdncGxvdChkYXRhID0gQmlyZXNpbl9ib3RoX2FubnVsdXMsIG1hcHBpbmcgPSBhZXMoeCA9IFRpbWVfc2luY2VfU3RhcnQsIHkgPSBUZW1wZXJhdHVyZV9kZWdDLCBjb2xvdXIgPSBTZW5zb3JfTm8pKSArCiAgZ2VvbV9saW5lKGxpbmV3aWR0aCA9IDEuMjUpICsKICB0aGVtZV9jbGFzc2ljKCkgKwogIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChtYXJnaW4gPSBtYXJnaW4ociA9IDE1KSksIAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChtYXJnaW4gPSBtYXJnaW4odCA9IDEwKSksIAogICAgICAgIGF4aXMudGV4dD0gZWxlbWVudF90ZXh0KGNvbG91cj0iYmxhY2siKSkgKwogIHhsYWIoIlRpbWUgW2hdIikgKwogIHlsYWIoZXhwcmVzc2lvbigiVGVtcGVyYXR1cmUgW8KwQ10iKSkgKwogIHNjYWxlX3hfY29udGludW91cyhndWlkZSA9ICJwcmlzbV9taW5vciIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoMCwgMTYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IGMoMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JfYnJlYWtzID0gc2VxKDAsIDE2LCAyKSkgKwogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMTYwKSwgYnJlYWtzID0gc2VxKDAsIDE2MCwgMTApLCBleHBhbmQgPSBjKDAsMCkpICsKICBsYWJzKGNhcHRpb24gPSAiSm9uYXMgTS4gV2luZGlzY2gsIE1vbnQgVGVycmkgUm9jayBMYWIsIHN3aXNzdG9wbyIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSBjKDAuMjUsIDAuNSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQodGl0bGUgPSAiVGVtcGVyYXR1ciBTZW5zb3JzIikpICsKICBzY2FsZV9jb2xvcl9tYW51YWwobGFiZWxzID0gYygiTm8uIDEgKG91dGVyIGFubnVsdXMpIiwgIk5vLiAzIChpbm5lciBhbm51bHVzKSIpLAogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCJkYXJrb2xpdmVncmVlbjMiLCJyb3lhbGJsdWUxIikpICsKICBnZ3RpdGxlKCJCaXJlc2luIENSODMgJiBDSDgzLTEwIChib3RoIGFubnVsdXMgZmlsbGVkKSIpICsKICBzdGF0X3BlYWtzKHNwYW4gPSBOVUxMLAogICAgICAgICAgICAgZ2VvbSA9ICJ0ZXh0X3MiLAogICAgICAgICAgICAgbWFwcGluZyA9IGFlcyhsYWJlbCA9IHBhc3RlKGFmdGVyX3N0YXQoeS5sYWJlbCksIGFmdGVyX3N0YXQoeC5sYWJlbCkpKSwKICAgICAgICAgICAgIHgubGFiZWwuZm10ID0gImFmdGVyICUuMGYgaHJzICIsCiAgICAgICAgICAgICB5LmxhYmVsLmZtdCA9ICIgTWF4IFRlbXAuIG9mICUuMGbCsEMiLAogICAgICAgICAgICAgYXJyb3cgPSBncmlkOjphcnJvdyhsZW5ndGggPSB1bml0KDAuMywgImNtIikpLAogICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9udWRnZV9rZWVwKHggPSBjKDAuNSwgMC4yNSksICB5ID0gYyg1LCAxMCkpLAogICAgICAgICAgICAgaGp1c3QgPSAwKQogIApCaXJlc2luX2JvdGhfYW5udWx1c19QbG90CgpnZ3NhdmUoZmlsZW5hbWUgPSAiQmlyZXNpbl9ib3RoX2FubnVsdXMucGRmIiwgcGxvdCA9IEJpcmVzaW5fYm90aF9hbm51bHVzX1Bsb3QsIHdpZHRoID0gMjUsIGhlaWdodCA9IDEwLCB1bml0cyA9ICJjbSIsIGRwaSA9IDExMDApCgpCaXJlc2luX2JvdGhfYW5udWx1c19QbG90X3RyYW5zcGFyZW50IDwtIEJpcmVzaW5fYm90aF9hbm51bHVzX1Bsb3QgKyB0aGVtZShsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksCiAgICAgICAgbGVnZW5kLmJveC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiKSwKICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiKSwKICAgICAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gTkEpKQpnZ3NhdmUoQmlyZXNpbl9ib3RoX2FubnVsdXNfUGxvdF90cmFuc3BhcmVudCwgZmlsZW5hbWUgPSAiQmlyZXNpbl9ib3RoX2FubnVsdXNfdHJhbnNwYXJlbnQucG5nIiwgYmcgPSAidHJhbnNwYXJlbnQiKQoKYGBgCgpPdXRlciBhbm51bHVzIGZpbGxlZDoKCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIHBhZ2VkLnByaW50PVRSVUV9CgpCaXJlc2luX291dGVyX2FubnVsdXNfUGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IEJpcmVzaW5fb3V0ZXJfYW5udWx1cywgbWFwcGluZyA9IGFlcyh4ID0gVGltZV9zaW5jZV9TdGFydCwgeSA9IFRlbXBlcmF0dXJlX2RlZ0MsIGNvbG91ciA9IFNlbnNvcl9ObykpICsKICBnZW9tX2xpbmUobGluZXdpZHRoID0gMS4yNSkgKwogIHRoZW1lX2NsYXNzaWMoKSArCiAgdGhlbWUoYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KG1hcmdpbiA9IG1hcmdpbihyID0gMTUpKSwgCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KG1hcmdpbiA9IG1hcmdpbih0ID0gMTApKSwgCiAgICAgICAgYXhpcy50ZXh0PSBlbGVtZW50X3RleHQoY29sb3VyPSJibGFjayIpKSArCiAgeGxhYigiVGltZSBbaF0iKSArCiAgeWxhYihleHByZXNzaW9uKCJUZW1wZXJhdHVyZSBbwrBDXSIpKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGd1aWRlID0gInByaXNtX21pbm9yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygwLCAxNiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gYygwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vcl9icmVha3MgPSBzZXEoMCwgMTYsIDIpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwxNjApLCBicmVha3MgPSBzZXEoMCwgMTYwLCAxMCksIGV4cGFuZCA9IGMoMCwwKSkgKwogIGxhYnMoY2FwdGlvbiA9ICJKb25hcyBNLiBXaW5kaXNjaCwgTW9udCBUZXJyaSBSb2NrIExhYiwgc3dpc3N0b3BvIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC4yNSwgMC41KSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZCh0aXRsZSA9ICJUZW1wZXJhdHVyIFNlbnNvcnMiKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbChsYWJlbHMgPSBjKCJOby4gMiAobG93ZXIgdGhpcmQpIiwgIk5vLiA0ICh1cHBlciB0aGlyZCkiKSwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygiZGFya29saXZlZ3JlZW4zIiwicm95YWxibHVlMSIpKSArCiAgZ2d0aXRsZSgiQmlyZXNpbiBDUjgzICYgQ0g4My0xMCAob3V0ZXIgYW5udWx1cyBmaWxsZWQpIikgKwogIHN0YXRfcGVha3Moc3BhbiA9IE5VTEwsCiAgICAgICAgICAgICBnZW9tID0gInRleHRfcyIsCiAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKGxhYmVsID0gcGFzdGUoYWZ0ZXJfc3RhdCh5LmxhYmVsKSwgYWZ0ZXJfc3RhdCh4LmxhYmVsKSkpLAogICAgICAgICAgICAgeC5sYWJlbC5mbXQgPSAiYWZ0ZXIgJS4wZiBocnMgIiwKICAgICAgICAgICAgIHkubGFiZWwuZm10ID0gIiBNYXggVGVtcC4gb2YgJS4wZsKwQyIsCiAgICAgICAgICAgICBhcnJvdyA9IGdyaWQ6OmFycm93KGxlbmd0aCA9IHVuaXQoMC4zLCAiY20iKSksCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX251ZGdlX2tlZXAoeCA9IGMoMC41LCAwLjI1KSwgIHkgPSBjKDUsIDEwKSksCiAgICAgICAgICAgICBoanVzdCA9IDApCiAgCkJpcmVzaW5fb3V0ZXJfYW5udWx1c19QbG90CgpnZ3NhdmUoZmlsZW5hbWUgPSAiQmlyZXNpbl9vdXRlcl9hbm51bHVzLnBkZiIsIHBsb3QgPSBCaXJlc2luX291dGVyX2FubnVsdXNfUGxvdCwgd2lkdGggPSAyNSwgaGVpZ2h0ID0gMTAsIHVuaXRzID0gImNtIiwgZHBpID0gMTEwMCkKCkJpcmVzaW5fb3V0ZXJfYW5udWx1c19QbG90X3RyYW5zcGFyZW50IDwtIEJpcmVzaW5fb3V0ZXJfYW5udWx1c19QbG90ICsgdGhlbWUobGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIpLAogICAgICAgIGxlZ2VuZC5ib3guYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksCiAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiksCiAgICAgICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IE5BKSkKZ2dzYXZlKEJpcmVzaW5fb3V0ZXJfYW5udWx1c19QbG90X3RyYW5zcGFyZW50LCBmaWxlbmFtZSA9ICJCaXJlc2luX291dGVyX2FubnVsdXNfdHJhbnNwYXJlbnQucG5nIiwgYmcgPSAidHJhbnNwYXJlbnQiKQoKYGBgCg==